package com.haixiaoke.saas.contract.mapper;

import com.haixiaoke.saas.contract.domain.LesseeContract;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 租客合同Mapper接口
 *
 * @author panda
 * @date 2024-06-04
 */
public interface LesseeContractMapper {
    /**
     * 查询租客合同
     *
     * @param lesseeContractId 租客合同主键
     * @return 租客合同
     */
    LesseeContract selectLesseeContractByLesseeContractId(String lesseeContractId);

    /**
     * 查询租客合同列表
     *
     * @param lesseeContract 租客合同
     * @return 租客合同集合
     */
    List<LesseeContract> selectLesseeContractList(LesseeContract lesseeContract);

    /**
     * 新增租客合同
     *
     * @param lesseeContract 租客合同
     * @return 结果
     */
    int insertLesseeContract(LesseeContract lesseeContract);

    /**
     * 修改租客合同
     *
     * @param lesseeContract 租客合同
     * @return 结果
     */
    int updateLesseeContract(LesseeContract lesseeContract);

    /**
     * 删除租客合同
     *
     * @param lesseeContractId 租客合同主键
     * @return 结果
     */
    int deleteLesseeContractByLesseeContractId(String lesseeContractId);

    /**
     * 批量删除租客合同
     *
     * @param lesseeContractIds 需要删除的数据主键集合
     * @return 结果
     */
    int deleteLesseeContractByLesseeContractIds(String[] lesseeContractIds);

    List<LesseeContract> flatSelectLesseeContractList(LesseeContract lesseeContract);

    /**
     * 检查是否可以重新发起合同(关联的订单是否有指定状态的合同)
     *
     * @param orderId
     * @return
     */
    int checkRelaunch(String orderId);

    /**
     * 小程序删除租客合同
     *
     * @param lesseeContractId
     * @return
     */
    int frontDeletedLesseeContract(String lesseeContractId);

    LesseeContract selectLesseeContractByFlowId(String flowId);

    /**
     * 每天凌晨10分执行租客合同逾期定时任务
     */
    List<LesseeContract> selectLesseeContractOverdueTask();

    /**
     * 批量修改租客合同状态为逾期
     *
     * @param lesseeContractIds
     * @param lesseeContractStatus
     * @return
     */
    int updateBatchLesseeContractByStatus(@Param("lesseeContractIds") List<String> lesseeContractIds, @Param("lesseeContractStatus") String lesseeContractStatus);

    LesseeContract selectLesseeContractByOrderId(String orderId);

    /**
     * 根据订单号查询无效的租客合同(待确认,签署中)
     * @param orderId
     * @return
     */
    List<LesseeContract> selectInvalidLesseeContractByOrderId(String orderId);

}
